package com.lecyon.farm.base;

import com.google.common.collect.Maps;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * Restful Service 请求对象
 *
 * @author Yao Zheng
 */
@Data
public class RestRequest implements Serializable {

    /**
     * 操作命令
     */
    private String cmd;

    /**
     * 请求参数
     */
    private Map<String, Object> parameters = Maps.newHashMap();

    /**
     * jsonp模式支持js回调函数名称
     */
    private String callback;

    /**
     * UUID策略生成的唯一ID
     */
    private String requestId;

    /**
     * 用户的token
     */
    private String userToken;

    /**
     * 分辨率
     */
    private String resolution;

    /**
     * 经纬度
     */
    private String locationXy;

    /**
     * APP版本
     */
    private String appVersion;

    /**
     * 请求时间
     */
    private LocalDateTime requestTime;

    /**
     * 客户端IP
     */
    private String ip;

    /**
     * 是否开启debug
     */
    private boolean debug = true;

    /**
     * 客户端唯一标示代码
     */
    private String clientIdentifierCode;

    /**
     * 请求模式：normal、ping
     */
    private String runningMode = "normal";

    /**
     * 请求服务器地址
     */
    private String server = "";

    /**
     * 分页-页码
     */
    private int page = 0;

    /**
     * 分页-条数
     */
    private int rows = 10;

    @Override
    public String toString() {

        return new ToStringBuilder(this)
                .append("requestId", requestId)
                .append("cmd", cmd)
                .append("parameters", parameters)
                .append("userToken", userToken)
                .append("deviceToken", userToken)
                .append("resolution", resolution)
                .append("appVersion", appVersion)
                .append("requestTime", requestTime)
                .append("ip", ip)
                .append("clientIdentifierCode", clientIdentifierCode)
                .append("server", server)
                .append("page", server)
                .append("rows", server)
                .toString();
    }
}
